MongoDB와 연동

✒️ 2025-05-28 13:26 내용 수정



MongoDB 계정 생성


Java로 Spring boot와 연동

  1. MongoDB#데이터베이스 연결 설정 부분에서 Drivers를 선택한다.

mongodbspringboot 1.png

  1. Driver에서 Java를 선택하고 버전은 최신 버전으로 선택한다. 하단의 connection string을 복사해서 Spring boot 프로젝트의 application.properties(또는 application.yml) 파일에서 mongodb 연결 uri와 database를 추가한다.

mongodbspringboot 2.png

spring.data.mongodb.uri=mongodb+srv://<username>:<password>@<clustername>.mongodb.net/?retryWrites=true&w=majority&appName=<clustername>
spring.data.mongodb.database=<dbname>
spring:  
  data:  
    mongodb:  
      uri: mongodb+srv://<username>:<password>@<clustername>.mongodb.net/?retryWrites=true&w=majority&appName=<clustername>
      database: <dbname>
  1. build.gradle에 mongodb 의존성을 추가한다.
    • 아래 참고자료에 따르면 프로젝트에서 MongoDB만 사용할 경우엔 첫 번째 의존성 구문을 사용하지만, 다른 DB도 사용하는 경우엔 reactive 설정이 들어간 두 번째 의존성 구문을 사용한다고 한다.
    • 다만 실제로 아래의 연결 테스트를 해보니 spring-boot-starter-data-mongodb-reactive만 있으면 mongoTemplate bean 등록 관련 오류가 뜨기 때문에 두 구문을 모두 추가해서 해결했다.
# MongoDB만 사용할 경우
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

# 다른 DB도 사용할 경우
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'

mongodbspringboot 3.png

  1. 프로젝트의 Application 클래스에 @EnableMongoRepositories Annotation을 추가한다.

mongodbspringboot 4.png

  1. 프로젝트를 실행하고, 연결이 잘 되었는지 확인한다.

mongodbspringboot 6.png


테스트

  1. MongoDB와 데이터를 주고 받는 것을 확인하기 위해 src/main/java/projectpackage/entity 패키지를 만들고, 테스트용 클래스를 만든다.

mongodbspringboot 7.png

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "servernotes") // MongoDB의 collection이름
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Memo {
    @Id
    private String id;
    private String name;
    private String content;
}
  1. repository 패키지를 만들고, Repository 인터페이스를 만든다.

mongodbspringboot 8.png

import com.ase.serverckecklist.entity.Memo;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MemoRepository extends MongoRepository<Memo, String> {
	// 연결 테스트를 위해 간단하게 메모를 모두 가져오기만 할 예정
}
  1. service 패키지를 만든 후, Service 클래스를 작성한다.

mongodbspringboot 9.png

import com.ase.serverckecklist.entity.Memo;
import com.ase.serverckecklist.repository.MemoRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;

@Service
@RequiredArgsConstructor
public class MemoService {

    private final MemoRepository memoRepository;

    public ArrayList<Memo> index() {
        return (ArrayList<Memo>) memoRepository.findAll();
    }
}

  1. controller 패키지를 만든 후, 테스트용 클래스와 연관된 동작을 수행할 Controller를 작성한다.
    • 페이지를 보여줄 파일을 통해 데이터를 확인하는 것이 아닌 REST API로 테스트하기 위해 @RestController로 설정했다.

mongodbspringboot 10.png

import com.ase.serverckecklist.entity.Memo;
import com.ase.serverckecklist.service.MemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;

@RestController
public class MemoController {

    @Autowired
    private MemoService memoService;

    @GetMapping("/api/servernotes")
    public ArrayList<Memo> index() {
        return memoService.index(); // Service에서 DB 동작 수행
    }
}
  1. 이제 DB로부터 가져올 데이터를 추가하기 위해 MongoDB에 접속하여 클러스터를 선택한 후, Collections에서 Add My Own Data를 누른다.

mongodbspringboot 11.png

  1. Create Database에서 Database 이름을 입력하고, Collection 이름을 설정 한 뒤 생성한다.
    • Database 이름 : MongoDB와 연동에서 application.properties에 입력한 database 이름과 동일하게 설정
    • Collection 이름 : MongoDB와 연동 1번에서 Entity 설정 시 작성한 @Document(collection = "servernotes") 이름과 동일하게 설정

mongodbspringboot 12.png

  1. 생성된 DB에서 우측에 있는 INSERT DOCUMENT를 누르고, 테스트용 데이터를 Entity의 Field와 동일한 옵션으로 작성한다.

mongodbspringboot 13.png
mongodbspringboot 14.png
mongodbspringboot 15.png

  1. Spring boot 서버를 다시 가동한 후 웹 브라우저를 열고 Controller에서 설정한 url을 입력해서 DB로부터 데이터를 잘 가져오는지 확인한다.

mongodbspringboot 17.png